package com.yfs.cloud.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import com.yfs.cloud.authority.DefaultAuthCheckerImpl;
import com.yfs.cloud.commons.Constants;

/**
* @Company: 影法師工作室
* @Description: 数据权限校验器注解, 这个注解是加在 service 层方法上的, 加在别的包的方法上没用, 有人会问, 不能加在 Service类上面吗? 试想一下,如果整个 service 类中所有的方法都要某种权限的话, 那么这种权限就上升为模块权限了, 那就是在 AuthInterceptor 中进行鉴别的了
* @author 影法師  
* @date 2020年8月28日 上午8:50:43 
* @version V1.0
 */
@Target(value = ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface DataAuthChecker {

	/**数据接口实现类(由各个微服务具体实现), 这里实现自定义鉴权逻辑*/
	public Class<?> authChecker() default DefaultAuthCheckerImpl.class;

	/**什么角色的用户才被允许调用此数据接口, 默认是所有角色, 因为我原本的设想中, 数据权限主要就是通过角色来鉴权的, 注意, 这个属性是或的意思, 例如写了 {DEPARTMENT_ADMIN, PRODUCTLINE_ADMIN} 则表示该接口允许部门管理员和产品线管理员都允许访问此数据接口*/
	public String[] needRoles() default { Constants.ROLE_ALL };

}
